home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swaga_c.zip
/
CMDLINE.SWG
/
0013_Command Line Parsing.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-08-25
|
4KB
|
126 lines
{
From: dissel@nunic.nu.edu (David S. Issel)
Someone was looking for command line parsing in turbo pascal.
This is a unit that I wrote years ago.
To use it, simply put the USES CMDLINE; in your program.
Example1: If you entered: MYPROG /x/y/z="this is a test"
TurboPascal would respond: ParamStr(x) Contents
=========== =================
1 /x/y/z="this
2 is
3 a
4 test"
My unit would respond: 1 /X
2 /Y
3 /Z=this is a test
Example2: If you entered: MYPROG file1,file2,file3
TurboPascal would respond: ParamStr(x) Contents
=========== =================
1 file1,file2,file3
My unit would respond: 1 FILE1
2 FILE2
3 FILE3
My unit replaces the ParamCount variable and ParamStr() function.
The original TurboPascal routines are retained as System.ParamCount and
System.ParamStr()
Try it, you'll like it... (I swear!)
-------- cut here ------------- cmdline.pas ---------------------
}
Unit CMDLINE; { Written by David S. Issel, 1989 }
Interface { public }
Var ParamCount:integer;
Function ParamStr(Param:word):string;
Implementation { private }
Var
ParamArray:array[1..62] of string[127];
Function ParamStr;
begin
if Param<=ParamCount
then ParamStr:=ParamArray[Param]
else ParamStr:='';
end;
Procedure SetupParamArray;
var
Index:word;
WorkStr:string;
procedure TxfrString;
var
SrchChar:string;
begin
SrchChar:=WorkStr[Index];
Inc(Index);
while (Index<=Length(WorkStr)) and (WorkStr[Index]<>SrchChar) do
begin
ParamArray[ParamCount]:=ParamArray[ParamCount]+WorkStr[Index];
Inc(Index);
end;
if Index<=Length(WorkStr)
then Inc(Index);
end;
begin
ParamCount:=0;
if System.ParamCount<1 then Exit;
WorkStr:=System.ParamStr(1);
if System.ParamCount>1
then for Index:=2 to System.ParamCount do
WorkStr:=WorkStr+' '+System.ParamStr(Index);
Index:=1;
repeat
Inc(ParamCount);
ParamArray[ParamCount]:='';
if (WorkStr[Index]=#34) or (WorkStr[Index]=#39)
then TxfrString
else
begin
if WorkStr[Index]<>','
then ParamArray[ParamCount]:=ParamArray[ParamCount]+
Upcase(WorkStr[Index]);
Inc(Index);
if Index<=Length(WorkStr)
then
begin
while (Index<=Length(WorkStr)) and (WorkStr[Index]<>#47)
and (WorkStr[Index]<>#32) and (WorkStr[Index]<>#34)
and (WorkStr[Index]<>#39) and (WorkStr[Index]<>#44)
do
begin
ParamArray[ParamCount]:=ParamArray[ParamCount]+
Upcase(WorkStr[Index]);
Inc(Index);
end;
if (Index<=Length(WorkStr)) and ((WorkStr[Index]=#34)
or (WorkStr[Index]=#39))
then TxfrString;
end;
end;
while (Index<=Length(WorkStr)) and (WorkStr[Index]=#32) do
Inc(Index);
until Index>Length(WorkStr);
end;
begin { Initialization Code }
SetupParamArray;
end.